//
//  ValueObject.swift
//  VO_Yuejie
//
//  Created by laichunhui on 15/12/2.
//  Copyright © 2015年 lch. All rights reserved.
//

import Foundation

class ValueObject: NSObject {
    
    /// 分类
    var category: String?
    
    /// ID
    var id: Int = 0
    
    /// 简介
    var intro: String?
    
    /// 用户模型 － 如果直接使用 KVC，会变成字典
    var user: User?
    
    
    init(dict: [String: AnyObject]) {
        super.init()
        
        setValuesForKeysWithDictionary(dict)
    }
    
    override func setValue(value: AnyObject?, forKey key: String) {
        // 1. 判断 key 是否是 "User"
        if key == "user" {
            // 如果 key 是 user, value 是字典
            // 调用 User 的构造函数创建 user 对象属性
            user = User(dict: value as! [String: AnyObject])
            // 如果不return，user 属性又会被默认的 KVC 方法，设置成字典
            return
        }
        super.setValue(value, forKey: key)
    }
    
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {}
    
    override var description: String {
        let keys = ["id", "intro", "user"]
        
        return dictionaryWithValuesForKeys(keys).description
    }
}

